<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

/**
 * ENTRY MODEL
 *
 * @author  Ali OYGUR <alioygur@gmail.com>
 */
class Entry_model extends MY_Model
{
	public function __construct()
	{
		parent::__construct();
	}
	
	public function create(array $data = array())
	{
		// öncelikle tepki hedefinin daha önce eklenip eklenmediğini kontrol ediyoruz
		// eklenmişse id sini yoksa ekleyip id sini alıyoruz.
		$q = $this->db->select('id')->get_where('target', array('name' => $data['target']['name']), 1);

		if($q->num_rows())
		{
			$row = $q->row();
			$data['main']['target_id'] = $row->id;
		}
		else
		{
			$this->db->insert('target', $data['target']);
			$data['main']['target_id'] = $this->db->insert_id();
		}
		
		$this->db->insert('entry', $data['main']);
	}
	
	public function get($id)
	{
		$q = $this->db
			->select('e.*, t.name AS target')
			->from('entry AS e')
			->join('target AS t', 'e.target_id = t.id')
			->get();

		if (!$q->num_rows())
			return FALSE;

		return $q->row();
	}

	private function gets($limit = 0, $offset = 0)
	{
		return $this->db
			->select('SQL_CALC_FOUND_ROWS e.*, t.name AS target, u.username', FALSE)
			->from('entry AS e')
			->join('target AS t', 'e.target_id = t.id')
			->join('user AS u', 'e.user_id = u.id');
	}

	public function get_all($limit = 0, $offset = 0)
	{
		$this->gets($limit, $offset); 
		return parent::my_result();
	}
	
	/**
	 * Şartlara uygun toplam kayıt sayısını döndürür
	 * @param array
	 * @return int
	 */
	public function count($options = array())
	{
		$where = array();

		if(isset($options['id'])) $where['id'] = $options['id'];

		return $this->db
			->where($where)
			->count_all_results('entry');
	}
}

/* End of file Entry_model.php */
